package com.hzw.saas.service.hpc.service;

import com.hzw.saas.api.hpc.bo.HpcAccountProviderBo;
import com.hzw.saas.service.hpc.exception.QingCloudAddUserException;
import com.hzw.saas.service.hpc.exception.QingCloudDeleteUserException;
import com.hzw.saas.service.hpc.exception.QingCloudException;
import com.hzw.saas.service.hpc.service.bo.ClusterUsageBO;

import java.util.List;

/**
 * @author sonam
 * @sine 2021/12/20 9:29 上午
 */
public interface IQingCloudService {
    /**
     * 指定供应商添加HPC账号
     * @param providerBo
     * @param hpcAccount
     * @param hpcPassword
     */
    void addUser(HpcAccountProviderBo providerBo, String hpcAccount, String hpcPassword) throws QingCloudAddUserException;

    /**
     * 指定供应商删除HPC账号
     * @param providerBo
     * @param hpcAccount
     */
    void deleteUser(HpcAccountProviderBo providerBo, String hpcAccount) throws QingCloudDeleteUserException;

    /**
     * 获取供应商提供的HPC账号列表
     * @param providerBo
     */
    List<String> getUsers(HpcAccountProviderBo providerBo) throws QingCloudException;

    /**
     * 获取供应商对应集群的状态
     * @param providerBo
     * @return
     */
    ClusterUsageBO getClusterUsage(HpcAccountProviderBo providerBo) throws QingCloudException;

    /**
     * 获取供应商对应集群的状态(缓存数据)
     * @param providerBo
     * @return
     */
    ClusterUsageBO getCacheClusterUsage(HpcAccountProviderBo providerBo) throws QingCloudException;

}
